<?php
/******************************************************************************/
define('WDK_PATH'	,	dirname(dirname(dirname(__FILE__))).'/');
/******************************************************************************/
require WDK_PATH.'core/UnitTestConf.php';
require dirname(__FILE__).'/Class.php';
define('NAME', str_replace(WDK_PATH.'helpers/', '', dirname(__FILE__)));
/**
 * @since 2011. 9. 30
 * @author kinuz
 */
class UnitTest extends PHPUnit_Framework_TestCase
{
	################################################################################################################################
	#	1. Setting Basic varialbes for Testing..
	################################################################################################################################
	protected static $passwd;
	protected static $error = false;

	################################################################################################################################
	#	2. Basic Method Testing..
	################################################################################################################################
	/**
	 *	@author kinuz
	 *	@since 2011. 9. 30
	 */
	public function testEncrypt4Class()
	{
		
		
		try
		{
			$c = Wdk::helper(NAME);
			self::$passwd = $c->encrypt('password');
			echo self::$passwd;
			$this->assertTrue($c->isEncrypted(self::$passwd), 'encrypt');
		}
		catch(AmException $e)
		{
			self::$error = true;
			$this->assertTrue(False, 'Exception - '.$e->getMessage());
		}
	}
	
	/**
	 *	@author kinuz
	 *	@since 2011. 9. 30
	 */
	public function testDecrypt4Class()
	{
		if(self::$error == true) return;
		try
		{
			$c = Wdk::helper(NAME);
			$this->assertEquals('pas*****', $c->decrypt(self::$passwd), 'decrypt');
		}
		catch(AmException $e)
		{
			self::$error = true;
			$this->assertTrue(False, 'Exception - '.$e->getMessage());
		}
	}
	
	/**
	 *	@author kinuz
	 *	@since 2011. 9. 30
	 */
	public function testIsEncrypted4Class()
	{
		if(self::$error == true) return;
		try
		{
			$c = Wdk::helper(NAME);
			$this->assertTrue(	$c->isEncrypted(self::$passwd)	, 'isEncrypted True');
			$this->assertFalse(	$c->isEncrypted('asdfasdf')		, 'isEncrypted False');
		}
		catch(AmException $e)
		{
			self::$error = true;
			$this->assertTrue(False, 'Exception - '.$e->getMessage());
		}
	}
	################################################################################################################################
	#	3. Manager Method Testing..
	################################################################################################################################
	
	################################################################################################################################
	#	4. Scenario Testing..
	################################################################################################################################
	/**
	 *	@author kinuz
	 *	@since 2011. 9. 30
	 */
	public function testSenarioA()
	{
		if(self::$error == true) return;
		try
		{
			$c = Wdk::helper(NAME);
			
			$passwd = utRc(7, 14);
			$epasswd = $c->encrypt($passwd);
			
			$this->assertEquals(str_pad(substr($passwd,0,3), strlen($passwd), '*'), $c->decrypt($epasswd), "decrypt");
			
			
		}
		catch(AmException $e)
		{
			self::$error = true;
			$this->assertTrue(False, 'Exception - '.$e->getMessage());
		}
	}
	
	################################################################################################################################
	#	5. Testing tool Methods
	################################################################################################################################
	private function removeTestData()
	{
		$ci = get_instance();
		$ci->db->query("DELETE FROM `position` WHERE `position_seq` = ".self::$position_seq);
	}
	public function setUp()
	{
	//	no need..
	}
	public function tearDown()
	{
	//	no need..
	}
	################################################################################################################################
}
?>